I personally like to declare everything in final and immulatable so that it give me feel it more safe (e.g.: variable won't be replace with other value unexpected; method won't be override unexpected). The following is some discussion, see if you interested.

http://tundra-programming.blogspot.com/2005/06/how-often-do-you-use-final.html
http://bordet.blogspot.com/2005/07/weird-particular-in-javautilconcurrent.html

Here is a few update that against using final, mainly against using final class but not final method and variable:
http://blogs.objectmentor.com/ArticleS.MichaelFeathers.ItsTimeToDeprecateFinal
http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3325667363
http://www.artima.com/forums/flat.jsp?forum=106&thread=161019

And here is some support using final: http://www.churchillobjects.com/c/11027d.html
Prevent security and memory leak in rare case: http://futuretask.blogspot.com/2006/05/java-tip-10-constructor-exceptions-are.html